package cn.neusoft.mapper;

import cn.neusoft.domain.Dept;
import cn.neusoft.query.BaseQuery;

import java.util.List;

public interface DeptMapper {
    /**
     * 新增部门
     * @param dept
     * @return
     */
    int add(Dept dept);

    /**
     * 更新部门信息
     * @param dept
     * @return
     */
    int update(Dept dept);

    /**
     * 根据id删除部门
     * @param dept_id
     * @return
     */
    int deleteById(Long dept_id);

    /**
     * 根据id查找部门
     * @param dept_id
     * @return
     */
    Dept findById(Long dept_id);

    /**
     * 查询全部部门信息
     * @return
     */
    List<Dept> findAll();

    /**
     * 条件查询
     * 可以传入一个searchKey，根据searchKey模糊查询dept_name和leader两个字段
     * @param query
     * @return
     */
    List<Dept> findByCondition(BaseQuery query);

    /**
     * 根据id查询当前部门的子部门数量
     * @param dept_id
     * @return
     */
    int hasChildById(Long dept_id);

    /**
     * 用于新增或修改时查询是否有同名部门
     * @param dept
     * @return
     */
    Dept checkDeptNameUnique(Dept dept);

    String getDeptNameById(Long dept_id);

    List<Dept> getChildrenById(Long dept_id);
}